package view;

/**
 * @author eversonpaulo
 */
//import Relatorio.rel_Tabelas;
import Utilitarios.TamanhoMaximoTextField;
import dao.DocumentoDAO;
import dao.ProcessoDAO;
import dao.SetorDAO;
import dao.TipoDAO;

import java.awt.Component;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.FlowLayout;
import java.awt.Font;
import java.beans.PropertyVetoException;
import java.io.File;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;
import javax.swing.plaf.basic.BasicInternalFrameUI;
import javax.swing.table.DefaultTableModel;
import model.Documento;
import model.Processo;
import model.Setor;
import model.Tipo;
import org.jfree.ui.ExtensionFileFilter;
import org.netbeans.lib.awtextra.AbsoluteLayout;
import static view.fPrincipal.getPanel;
import static view.frameProcesso.qtds;

//import net.sf.jasperreports.engine.JRException;
public class frameDocumento extends javax.swing.JInternalFrame {

    private DefaultTableModel modelo = new DefaultTableModel() {
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };
    private DefaultComboBoxModel modeljcomboboxTipo = new DefaultComboBoxModel() {
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };
    String opcao = "";
    private int codProcesso;
    public static int qtdDoc;
    public static JTextField qtdscampo;

    public frameDocumento(int cod, int qtd, JTextField jtqtd) {
        initComponents();
        liberarCampos(false);
        tabela();
        montaListaTipos();
        jexibidoc.setVisible(true);
        codProcesso = cod;
        qtdDoc = qtd;
        qtdscampo = jtqtd;
        //Codigo para implementar o fechar a tela
        this.addInternalFrameListener(new InternalFrameListener() {
            @Override
            public void internalFrameOpened(InternalFrameEvent e) {
            }

            @Override
            public void internalFrameClosing(InternalFrameEvent e) {
                if (qtdDoc <= 0) {
                    JOptionPane.showMessageDialog(null, "Nenhum Documento Adicionado!!");
                    setVisible(false);
                } else {
                    JOptionPane.showMessageDialog(null, "Existem " + qtdDoc + " Documento(s) Adicionado(s) !");
                    setVisible(false);
                }

            }

            @Override
            public void internalFrameClosed(InternalFrameEvent e) {
            }

            @Override
            public void internalFrameIconified(InternalFrameEvent e) {
            }

            @Override
            public void internalFrameDeiconified(InternalFrameEvent e) {
            }

            @Override
            public void internalFrameActivated(InternalFrameEvent e) {
            }

            @Override
            public void internalFrameDeactivated(InternalFrameEvent e) {
            }
        });
        //Tira as barras de todos os lados da janela
//        ((BasicInternalFrameUI) this.getUI()).setNorthPane(null);
//        ((BasicInternalFrameUI) this.getUI()).setSouthPane(null);
//        ((BasicInternalFrameUI) this.getUI()).setWestPane(null);
//        ((BasicInternalFrameUI) this.getUI()).setEastPane(null);
        exibePainelCadastro(false);

        lbSigla.setFont(new Font("Tahoma", Font.PLAIN, 11));

//        lbIncluir.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbAlterar.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbSalvar.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbCancelar.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbExcluir.setFont(new Font("Tahoma", Font.PLAIN, 11));
//        lbSair.setFont(new Font("Tahoma", Font.PLAIN, 11));
        jtCodDoc.setVisible(false);
        lbSigla1.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lbSigla.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lbDescricao1.setFont(new Font("Tahoma", Font.PLAIN, 11));
        arquivoContas.setEditable(false);

        ajusta_botoes();

        monta_jTUnidade();
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);
            Atribui_Campos();
        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        jPanel2 = new javax.swing.JPanel();
        btPrimeiro = new javax.swing.JButton();
        btAnterior = new javax.swing.JButton();
        btProximo = new javax.swing.JButton();
        btUltimo = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jPanelDados = new javax.swing.JPanel();
        jPContas = new javax.swing.JProgressBar();
        jSelecionar = new javax.swing.JButton();
        arquivoContas = new javax.swing.JTextField();
        jtDescricao = new javax.swing.JTextField();
        jtCodDoc = new javax.swing.JTextField();
        jtNumero = new javax.swing.JTextField();
        cbtipo = new javax.swing.JComboBox();
        lbSigla = new javax.swing.JLabel();
        lbSigla1 = new javax.swing.JLabel();
        lbDescricao1 = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jScrTable = new javax.swing.JScrollPane();
        jTUnidade = new javax.swing.JTable();
        jPanel1 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        btNovo = new javax.swing.JButton();
        btEditar = new javax.swing.JButton();
        btExcluir = new javax.swing.JButton();
        btCancelar = new javax.swing.JButton();
        btGravar = new javax.swing.JButton();
        jexibidoc = new javax.swing.JButton();
        btConfirmar = new javax.swing.JButton();

        setClosable(true);
        setTitle("Gerenciamento de Documento");
        setToolTipText("");
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        btPrimeiro.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710613_playback_ff (2).png"))); // NOI18N
        btPrimeiro.setToolTipText("Primeiro Registro");
        btPrimeiro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btPrimeiroActionPerformed(evt);
            }
        });
        getContentPane().add(btPrimeiro, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 470, -1, -1));

        btAnterior.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710631_playback_play (2).png"))); // NOI18N
        btAnterior.setToolTipText("Registro Anterior");
        btAnterior.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btAnteriorActionPerformed(evt);
            }
        });
        getContentPane().add(btAnterior, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 470, -1, -1));

        btProximo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710631_playback_play.png"))); // NOI18N
        btProximo.setToolTipText("Próximo Registro");
        btProximo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btProximoActionPerformed(evt);
            }
        });
        getContentPane().add(btProximo, new org.netbeans.lib.awtextra.AbsoluteConstraints(540, 470, -1, -1));

        btUltimo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398710613_playback_ff.png"))); // NOI18N
        btUltimo.setToolTipText("Último Registro");
        btUltimo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btUltimoActionPerformed(evt);
            }
        });
        getContentPane().add(btUltimo, new org.netbeans.lib.awtextra.AbsoluteConstraints(590, 470, -1, -1));

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        jLabel1.setText("Documento");
        getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 10, 570, 30));

        jPanelDados.setBorder(javax.swing.BorderFactory.createTitledBorder("Documento"));
        jPanelDados.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jPContas.setBackground(new java.awt.Color(204, 204, 204));
        jPContas.setForeground(new java.awt.Color(0, 0, 0));
        jPanelDados.add(jPContas, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 190, 440, 20));

        jSelecionar.setText("Selecionar");
        jSelecionar.setEnabled(false);
        jSelecionar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jSelecionarActionPerformed(evt);
            }
        });
        jPanelDados.add(jSelecionar, new org.netbeans.lib.awtextra.AbsoluteConstraints(380, 160, 90, -1));

        arquivoContas.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        arquivoContas.setToolTipText("Caminho do Documento no Sistema");
        arquivoContas.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                arquivoContasActionPerformed(evt);
            }
        });
        jPanelDados.add(arquivoContas, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 160, 340, -1));
        arquivoContas.getAccessibleContext().setAccessibleDescription("Localização do Documento");

        jtDescricao.setHorizontalAlignment(javax.swing.JTextField.LEFT);
        jtDescricao.setToolTipText("Descrição do Documento");
        jtDescricao.setAutoscrolls(false);
        jtDescricao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtDescricaoActionPerformed(evt);
            }
        });
        jPanelDados.add(jtDescricao, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 110, 440, -1));
        jtDescricao.getAccessibleContext().setAccessibleDescription("Descrição  do Documento");

        jtCodDoc.setEditable(false);
        jtCodDoc.setBackground(new java.awt.Color(204, 204, 204));
        jtCodDoc.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jtCodDoc.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jtCodDoc.setToolTipText("Código do Setor");
        jtCodDoc.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jtCodDoc.setDisabledTextColor(new java.awt.Color(204, 204, 204));
        jtCodDoc.setFocusable(false);
        jtCodDoc.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtCodDocActionPerformed(evt);
            }
        });
        jPanelDados.add(jtCodDoc, new org.netbeans.lib.awtextra.AbsoluteConstraints(400, 20, 70, -1));

        jtNumero.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jtNumero.setToolTipText("Número do Documento");
        jtNumero.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jtNumeroActionPerformed(evt);
            }
        });
        jtNumero.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                jtNumeroKeyTyped(evt);
            }
        });
        jPanelDados.add(jtNumero, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 60, 180, -1));
        jtNumero.getAccessibleContext().setAccessibleDescription("Numero");

        cbtipo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbtipoActionPerformed(evt);
            }
        });
        jPanelDados.add(cbtipo, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 60, 200, -1));

        lbSigla.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbSigla.setText("Tipo:");
        lbSigla.setToolTipText("Tipo");
        jPanelDados.add(lbSigla, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 40, 40, 20));

        lbSigla1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbSigla1.setText("Número : ");
        lbSigla1.setToolTipText("Número");
        jPanelDados.add(lbSigla1, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 40, 80, 20));

        lbDescricao1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
        lbDescricao1.setText("Descrição :");
        lbDescricao1.setToolTipText("Descrição");
        jPanelDados.add(lbDescricao1, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 90, 80, 20));

        jLabel15.setText("Caminho\\Nome do Arquivo dos Documentos:");
        jLabel15.setToolTipText("Caminho do Arquivo no Sistema");
        jPanelDados.add(jLabel15, new org.netbeans.lib.awtextra.AbsoluteConstraints(30, 140, -1, 20));

        getContentPane().add(jPanelDados, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 130, 510, 240));

        jTUnidade.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jTUnidade.setToolTipText("Registro Cadastrados");
        jTUnidade.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTUnidadeMouseClicked(evt);
            }
        });
        jTUnidade.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                jTUnidadeKeyReleased(evt);
            }
        });
        jScrTable.setViewportView(jTUnidade);

        getContentPane().add(jScrTable, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 130, 580, 330));
        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 560, 670, 20));
        getContentPane().add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 20, 550));

        btNovo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398709290_Add.png"))); // NOI18N
        btNovo.setToolTipText("Inserir um novo registro");
        btNovo.setFocusable(false);
        btNovo.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btNovo.setMinimumSize(new java.awt.Dimension(85, 25));
        btNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btNovoActionPerformed(evt);
            }
        });
        getContentPane().add(btNovo, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 70, -1, 40));

        btEditar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398709081_edit-file.png"))); // NOI18N
        btEditar.setToolTipText("Alterar o registro atual");
        btEditar.setFocusable(false);
        btEditar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btEditarActionPerformed(evt);
            }
        });
        getContentPane().add(btEditar, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 70, -1, 40));

        btExcluir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398708641_Delete.png"))); // NOI18N
        btExcluir.setToolTipText("Excluir o registro atual");
        btExcluir.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        btExcluir.setFocusable(false);
        btExcluir.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btExcluirActionPerformed(evt);
            }
        });
        getContentPane().add(btExcluir, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 70, -1, 40));

        btCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398708933_Redo.png"))); // NOI18N
        btCancelar.setToolTipText("Cancelar alterações ou a inclusão do novo registro");
        btCancelar.setFocusable(false);
        btCancelar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btCancelarActionPerformed(evt);
            }
        });
        getContentPane().add(btCancelar, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 70, -1, 40));

        btGravar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1398708417_Save.png"))); // NOI18N
        btGravar.setToolTipText("Salvar alterações ou uma nova inclusão do registro");
        btGravar.setFocusable(false);
        btGravar.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btGravar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btGravarActionPerformed(evt);
            }
        });
        getContentPane().add(btGravar, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 70, -1, 40));

        jexibidoc.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1400086267_old-edit-find.png"))); // NOI18N
        jexibidoc.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jexibidocActionPerformed(evt);
            }
        });
        getContentPane().add(jexibidoc, new org.netbeans.lib.awtextra.AbsoluteConstraints(460, 70, -1, 40));

        btConfirmar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagens/1400086385_Check.png"))); // NOI18N
        btConfirmar.setToolTipText("");
        btConfirmar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btConfirmarActionPerformed(evt);
            }
        });
        getContentPane().add(btConfirmar, new org.netbeans.lib.awtextra.AbsoluteConstraints(570, 70, -1, -1));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btPrimeiroActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);
            Atribui_Campos();
        }

        btProximo.setEnabled(true);
        btUltimo.setEnabled(true);
        btPrimeiro.setEnabled(false);
        btAnterior.setEnabled(false);
    }//GEN-LAST:event_btPrimeiroActionPerformed

    private void btAnteriorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btAnteriorActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getSelectedRow() - 1;
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
            Atribui_Campos();
        }

        if ((linhaAtual - 1) < 0) {
            btPrimeiro.setEnabled(false);
            btAnterior.setEnabled(false);
        } else {
            btProximo.setEnabled(true);
            btUltimo.setEnabled(true);
        }
    }//GEN-LAST:event_btAnteriorActionPerformed

    private void btProximoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btProximoActionPerformed
        int linhaAtual, qdeLinhas;
        linhaAtual = jTUnidade.getSelectedRow() + 1;
        qdeLinhas = jTUnidade.getRowCount();

        if (linhaAtual > 0) {
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
            Atribui_Campos();
        }

        if ((linhaAtual + 1) == qdeLinhas) {
            btProximo.setEnabled(false);
            btUltimo.setEnabled(false);
        } else {
            btPrimeiro.setEnabled(true);
            btAnterior.setEnabled(true);
        }
    }//GEN-LAST:event_btProximoActionPerformed

    private void btUltimoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btUltimoActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            linhaAtual = jTUnidade.getRowCount() - 1;
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
            Atribui_Campos();
        }

        btProximo.setEnabled(false);
        btUltimo.setEnabled(false);
        btPrimeiro.setEnabled(true);
        btAnterior.setEnabled(true);
    }//GEN-LAST:event_btUltimoActionPerformed

    private void btNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btNovoActionPerformed
        novoRegistro();
       
    }//GEN-LAST:event_btNovoActionPerformed

    private void btEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btEditarActionPerformed
        alteraRegistro();
     
    }//GEN-LAST:event_btEditarActionPerformed

    private void btGravarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btGravarActionPerformed
        gravaRegistro();

    }//GEN-LAST:event_btGravarActionPerformed

    private void btCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelarActionPerformed
        cancelaRegistro();
       
    }//GEN-LAST:event_btCancelarActionPerformed

    private void btExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btExcluirActionPerformed
        excluiRegistro();
       
    }//GEN-LAST:event_btExcluirActionPerformed

    private void jTUnidadeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTUnidadeMouseClicked
        if (opcao.equals("")) {
            int linhaAtual;
            linhaAtual = jTUnidade.getSelectedRow();
            jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
            Atribui_Campos();

        }
    }//GEN-LAST:event_jTUnidadeMouseClicked

    private void jTUnidadeKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTUnidadeKeyReleased
        int linhaAtual;
        linhaAtual = jTUnidade.getSelectedRow();
        jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
        Atribui_Campos();
    }//GEN-LAST:event_jTUnidadeKeyReleased

    private void jtDescricaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtDescricaoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jtDescricaoActionPerformed

    private void jtCodDocActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtCodDocActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jtCodDocActionPerformed

    private void jtNumeroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtNumeroActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jtNumeroActionPerformed

    private void cbtipoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbtipoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_cbtipoActionPerformed

    private void jSelecionarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jSelecionarActionPerformed
        JFileChooser chooser = new JFileChooser();
        chooser.setFileFilter(new ExtensionFileFilter("Arquivos PDF", "pdf"));
        // AKI ! você passa como parametro a extensão e o tipo de dado
        // que vocÊ quer que apareça no chooser.
        String caminho = "";
        // Define o PATh Inicial em C:\.
        File pathInicial = new File("C:\\");
        chooser.setCurrentDirectory(pathInicial);
        // showSaveDialog retorna um inteiro,
        // e ele ira determinar que o chooser será para salvar.
        int retorno = chooser.showOpenDialog(null);
        if (retorno == JFileChooser.APPROVE_OPTION) {
            // o getSelectedFile pega o arquivo e o
            // getAbsolutePath retorna uma string contendo o endereço.
            caminho = chooser.getSelectedFile().getAbsolutePath();
        }
        if (!caminho.equals("")) {
            arquivoContas.setText(caminho);
            // o +".txt" é para ele salvar como txt .
            // Para outro tipo de arquivo, mude a extensao final.
            // se você nao mudar a extensao, ele vai criar como ".bin"
        } else {
            String nomeArq = "C:\\Protocolo\\Documento\\" + "" + ".pdf";
            arquivoContas.setText(nomeArq);
        }
    }//GEN-LAST:event_jSelecionarActionPerformed

    private void jexibidocActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jexibidocActionPerformed
        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        //  jTUnidade.changeSelection(0, 0, false, false);
        if (linhaAtual > 0) {
            File pdf;
            pdf = new File(jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 4).toString().replace("\\", "\\\\"));
            try {
                Desktop.getDesktop().open(pdf);
            } catch (Exception ex) {
                ex.printStackTrace();
                JOptionPane.showMessageDialog(null, "Erro no Desktop: " + ex);
            }
        }
    }//GEN-LAST:event_jexibidocActionPerformed

    private void arquivoContasActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_arquivoContasActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_arquivoContasActionPerformed

    private void btConfirmarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btConfirmarActionPerformed

        Processo p = new Processo();
        frameProcesso.qtds = qtdDoc;
        qtdscampo.setText(Integer.toString(qtds));

        ProcessoDAO pdao = new ProcessoDAO();
        p.setQtdDoc(qtdDoc);
        p.setId_Processo(codProcesso);
        pdao.alterar(p);

        if (qtdDoc <= 0) {
            JOptionPane.showMessageDialog(null, "Nenhum Documento Adicionado!!");
            qtdDoc = 0;
            setVisible(false);
        } else {
            JOptionPane.showMessageDialog(null, "Existem " + qtdDoc + " Documento(s) Adicionado(s) !");
            qtdDoc = 0;
            setVisible(false);
        }


    }//GEN-LAST:event_btConfirmarActionPerformed

    private void jtNumeroKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jtNumeroKeyTyped
        String caracteres = "0987654321";
        if (!caracteres.contains(evt.getKeyChar() + "")) {
            evt.consume();
        }
    }//GEN-LAST:event_jtNumeroKeyTyped

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTextField arquivoContas;
    private javax.swing.JButton btAnterior;
    private javax.swing.JButton btCancelar;
    private javax.swing.JButton btConfirmar;
    private javax.swing.JButton btEditar;
    private javax.swing.JButton btExcluir;
    private javax.swing.JButton btGravar;
    private javax.swing.JButton btNovo;
    private javax.swing.JButton btPrimeiro;
    private javax.swing.JButton btProximo;
    private javax.swing.JButton btUltimo;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JComboBox cbtipo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JProgressBar jPContas;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanelDados;
    private javax.swing.JScrollPane jScrTable;
    private javax.swing.JButton jSelecionar;
    private javax.swing.JTable jTUnidade;
    private javax.swing.JButton jexibidoc;
    private javax.swing.JTextField jtCodDoc;
    private javax.swing.JTextField jtDescricao;
    private javax.swing.JTextField jtNumero;
    private javax.swing.JLabel lbDescricao1;
    private javax.swing.JLabel lbSigla;
    private javax.swing.JLabel lbSigla1;
    // End of variables declaration//GEN-END:variables

    public void saiTela() {
        frameDocumento.this.dispose();
    }

    public void ajustaCursor(int tipo) {
        Cursor cursor;

        if (tipo == 0) {
            cursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
        } else {
            cursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
        }

        setCursor(cursor);

    }

    public void ajusta_botoes() {
        if (opcao.equals("")) {
            btGravar.setEnabled(false);
            btCancelar.setEnabled(false);
            btNovo.setEnabled(true);
            btEditar.setEnabled(true);
            btExcluir.setEnabled(true);
            jexibidoc.setEnabled(true);

//            lbSalvar.setEnabled(false);
//            lbCancelar.setEnabled(false);
//            lbIncluir.setEnabled(true);
//            lbAlterar.setEnabled(true);
//            lbExcluir.setEnabled(true);
            btPrimeiro.setEnabled(true);
            btAnterior.setEnabled(true);
            btProximo.setEnabled(true);
            btUltimo.setEnabled(true);

        } else {
            btGravar.setEnabled(true);
            btCancelar.setEnabled(true);
            btNovo.setEnabled(false);
            btEditar.setEnabled(false);
            btExcluir.setEnabled(false);
            jexibidoc.setEnabled(false);
//            lbSalvar.setEnabled(true);
//            lbCancelar.setEnabled(true);
//            lbIncluir.setEnabled(false);
//            lbAlterar.setEnabled(false);
//            lbExcluir.setEnabled(false);
            btPrimeiro.setEnabled(false);
            btAnterior.setEnabled(false);
            btProximo.setEnabled(false);
            btUltimo.setEnabled(false);
        }
    }

    public void tabela() {
        jTUnidade.setModel(modelo);

        modelo.addColumn("Código");
        modelo.addColumn("Numero");
        modelo.addColumn("Tipo");
        modelo.addColumn("Descrição");
        modelo.addColumn("url");

        jTUnidade.getColumnModel().getColumn(0).setPreferredWidth(25);
        jTUnidade.getColumnModel().getColumn(1).setPreferredWidth(25);
        jTUnidade.getColumnModel().getColumn(2).setPreferredWidth(100);
        jTUnidade.getColumnModel().getColumn(3).setPreferredWidth(100);
        jTUnidade.getColumnModel().getColumn(4).setPreferredWidth(100);
        //codigo para esconder uma coluna na JTable
        //Esconder alguma coluna: No Caso a Primeira Coluna
        jTUnidade.getColumnModel().getColumn(0).setMinWidth(0);
        jTUnidade.getColumnModel().getColumn(0).setPreferredWidth(0);
        jTUnidade.getColumnModel().getColumn(0).setMaxWidth(0);
        //Esconder alguma coluna: No Caso a url
        jTUnidade.getColumnModel().getColumn(4).setMinWidth(0);
        jTUnidade.getColumnModel().getColumn(4).setPreferredWidth(0);
        jTUnidade.getColumnModel().getColumn(4).setMaxWidth(0);

        jTUnidade.getColumnModel().getColumn(2).setMinWidth(0);
        jTUnidade.getColumnModel().getColumn(2).setPreferredWidth(0);
        jTUnidade.getColumnModel().getColumn(2).setMaxWidth(0);
    }

    private void monta_jTUnidade() {
//      Fachada f = new Fachada();

        limpaCampos();

        DocumentoDAO udao = new DocumentoDAO();

        //  ArrayList<Documento> lista = new ArrayList<Documento>();
        List<Documento> lista2 = new ArrayList<Documento>();

        modelo.setNumRows(0);
        //  lista = udao.findAll2();
        lista2 = udao.pesquisarDocumentoCod((codProcesso));
        //    lista2 = udao.pesquisarItemRequ(Integer.parseInt(jtCodFiscalNF.getText().toString()));

        for (int i = 0; i < lista2.size(); i++) {
            modelo.addRow(new Object[]{lista2.get(i).getId_Documento(),
                lista2.get(i).getNumero(),
                lista2.get(i).getTipo(),
                lista2.get(i).getDescricao(),
                lista2.get(i).getUrl()});
        }
    }

    private void Atribui_Campos() {
        jtCodDoc.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 0).toString());
        jtNumero.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 1).toString());
        jtDescricao.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 3));
        arquivoContas.setText((String) jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 4));
        cbtipo.getModel().setSelectedItem(jTUnidade.getValueAt(jTUnidade.getSelectedRow(), 2));
    }

    //Limpa os campos, para evitar de deletar um item e ele ainda ficar atribuido no panel
    public void limpaCampos() {
        jtCodDoc.setText("");
        jtNumero.setText("");
        jtDescricao.setText("");
        arquivoContas.setText("");
        cbtipo.setSelectedIndex(-1);
    }

    public void exibePainelCadastro(boolean val) {
        //organiza os paineis
        jPanelDados.setVisible(val);
        //painel da tabela
        jScrTable.setVisible(!val);

        //organiza os botões
        btConfirmar.setVisible(!val);
        btNovo.setVisible(!val);
        btEditar.setVisible(!val);
        btExcluir.setVisible(!val);
        btAnterior.setVisible(!val);
        btPrimeiro.setVisible(!val);
        btProximo.setVisible(!val);
        btUltimo.setVisible(!val);
        jexibidoc.setEnabled(!val);

    }

    private void novoRegistro() {
        liberarCampos(true);
        exibePainelCadastro(true);
        jexibidoc.setVisible(false);

        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount() - 1;
        jTUnidade.changeSelection(linhaAtual, linhaAtual, false, false);
        opcao = "incluir";
        jTUnidade.setEnabled(false);
        ajusta_botoes();
        //Deixar os registros em branco
        jtCodDoc.setText(null);
        cbtipo.setEditable(false);
        cbtipo.setSelectedIndex(-1);
        jtDescricao.setText(null);
        jtNumero.setText(null);
        arquivoContas.setText(null);

    }

    private boolean validarCampos() {

        if ((jtDescricao.getText().trim().equals("")) || (jtDescricao.getText() == null)) {
            JOptionPane.showMessageDialog(null, "O campo DESCRIÇÃO não pode ficar em branco. Verifique!!!");
            jtDescricao.requestFocus();
            return false;
        } else {
            if ((jtNumero.getText().trim().equals("")) || (jtNumero.getText() == null)) {
                JOptionPane.showMessageDialog(null, "O campo Numero não pode ficar em branco. Verifique!!!");
                jtNumero.requestFocus();
                return false;

            } else {

                if ((cbtipo.getSelectedItem() == null)) {
                    JOptionPane.showMessageDialog(null, "Nenhum tipo foi Selecionado!");
                    cbtipo.requestFocus();
                    return false;
                }

            }
            return true;
        }
    }

    private void alteraRegistro() {
        if (!(jtCodDoc.getText().equals(""))) {
            exibePainelCadastro(true);

            liberarCampos(true);
            opcao = "alterar";
            jTUnidade.setEnabled(false);
            ajusta_botoes();
        }

    }

    public void liberarCampos(boolean val) {
        jSelecionar.setEnabled(val);;
        jtDescricao.setEditable(val);
        jtNumero.setEditable(val);
        cbtipo.setEnabled(val);
    }

    private void gravaRegistro() {

        String mens = "";
        int valor = 0;

        Documento d = new Documento();
        DocumentoDAO pdao = new DocumentoDAO();

        while (validarCampos() == true) {

            d.setDescricao(jtDescricao.getText());
            d.setProcesso(codProcesso);
            d.setNumero(jtNumero.getText());
            d.setUrl(arquivoContas.getText());
            Tipo tip = (Tipo) cbtipo.getSelectedItem();
            d.setTipo(tip);

            if (opcao.equals("incluir")) {
                pdao.incluir(d);
                qtdDoc++;
                //  this.qtdDoc++;
                valor = 1;
                exibePainelCadastro(false);
                jtCodDoc.setText(Integer.toString(d.getId_Documento()));
                mens = "Registro Gravado com Sucesso!!!";
            } else if (opcao.equals("alterar")) {
                d.setId(Integer.parseInt(jtCodDoc.getText()));
                pdao.alterar(d);
                valor = 1;
                mens = "Registro Alterado com Sucesso!!!";
            }

            if (valor > 0) {
                //JOptionPane.showMessageDialog(null,mens);
            } else {
                JOptionPane.showMessageDialog(null, "Não foi possivel " + opcao + " o registro. Verifique!!!");
                int linhaAtual;
                linhaAtual = jTUnidade.getRowCount();
                if (linhaAtual > 0) {
                    jTUnidade.changeSelection(0, 0, false, false);
                    Atribui_Campos();
                }
            }

            opcao = "";
            jTUnidade.setEnabled(true);
            jtCodDoc.setEditable(false);
            monta_jTUnidade();
            ajusta_botoes();
            liberarCampos(false);
            jexibidoc.setVisible(true);
            //     d.setProcesso();
            break;
        }

    }

    private void cancelaRegistro() {
        liberarCampos(false);

        exibePainelCadastro(false);

        int linhaAtual;
        linhaAtual = jTUnidade.getRowCount();
        if (linhaAtual > 0) {
            jTUnidade.changeSelection(0, 0, false, false);
            Atribui_Campos();
        }

        opcao = "";
        jtCodDoc.setEditable(false);
        jTUnidade.setEnabled(true);
        ajusta_botoes();
    }

    private void excluiRegistro() {
        int valor = 0;

        DocumentoDAO f = new DocumentoDAO();
        Documento s = new Documento();

        s.setId(Integer.parseInt(jtCodDoc.getText()));

        String nome = "Tem Certeza em Deletar Este Registro ? ";
        int opc = JOptionPane.showConfirmDialog(null, nome, "Exclusão", JOptionPane.YES_NO_OPTION);

        if (opc == JOptionPane.YES_OPTION) {
            f.remover2(s);
            qtdDoc--;
            valor = 1;

            if (valor > 0) {
                JOptionPane.showMessageDialog(null, "Registro excluido com sucesso!!!");
                //   this.qtdDoc--;
            } else {
                JOptionPane.showMessageDialog(null, "Erro na Exclusão - Verifique!!!");
            }
        }
        monta_jTUnidade();
        cancelaRegistro();
    }

    private void montaListaTipos() {
        modeljcomboboxTipo.removeAllElements();
        TipoDAO f = new TipoDAO();

        ArrayList<Tipo> lista2 = new ArrayList<Tipo>();

        lista2 = f.findAll2();

//        Arrays.sort(lista2);
        for (Tipo tipo : lista2) {
            modeljcomboboxTipo.addElement(tipo);
        }

        cbtipo.setModel(modeljcomboboxTipo);
    }

}
